/**
 * Trabajo que consiste en imprimir una cadena de caracteres y su tipo por consola.
 * 
 * @author HPCIII_Team2013
 */

package cl.ucn.hpc.webCrawler;

import java.io.IOException;
import java.io.InputStream;
import java.util.List;

import cl.ucn.hpc.webCrawler.IRunnableTask;

public class Trabajo extends Tools implements IRunnableTask {
	private String url;
	
	/**
	 * Constructor de la clase.
	 * 
	 * @param path Directorio general donde debe almacenar la informacion recibida.
	 * @param urlRec Link que se debe procesar.
	 */
	public Trabajo(final String path, String urlRec){
		super(path);
		url = urlRec;
	}

	/**
     * Realiza el proceso de busqueda por la web y almacena la informacion necesaria.
     * 
     * @param url Link de la pagina que debe procesar.
     * @return Lista de paginas que se redireccionan desde la que se analiza.
	 * @see cl.ucn.hpc.spider.IRunnableTask#execute()
	 */
	@Override
	public List<String> execute() {
		InputStream file = null;
		try {
			file = fetch(url);
		} catch (IOException e) {
			return null;
		} catch (IllegalArgumentException e1) {
			return null;
		}
		
		//Convierte la pagina a texto con anotaciones HTML
		String archivo = null;
		
		try {
			archivo = htmltext(file);
		} catch (IOException e1) {
			e1.printStackTrace();
		}

		//Obtiene los links contenidos en la pagina analizada
		List<String> links = null;
		try {
			links = links(archivo);
		} catch (IOException e) {
			e.printStackTrace();
		}
		
		//Obtiene los links de las imagenes
		List<String> images = null;
		try {
			images = images(archivo);
		} catch (IOException e) {
			e.printStackTrace();
		}

		//Extrae texto sin anotaciones HTML
		String text = null;
		try {
			text = text(archivo);
		} catch (IOException e) {
			e.printStackTrace();
		}
		
		try {
			blockingSave((url+"\r\n"),"0pagsRegist.txt");
			
			int correlativo = lineChain("0pagsRegist.txt",url);
			
			if(correlativo != -1){
				if(text != null) save(text, correlativo+"textoPag.txt",url);
				
				if(images != null) save(images, correlativo+"imgPag.txt");											
			}
			
		} catch (IOException e) {
			e.printStackTrace();
		}
		
		return links;
	}
}
